#
# @lc app=leetcode.cn id=167 lang=python3
#
# [167] 两数之和 II - 输入有序数组
#

"""
本题可以通过相向指针法解决
由于数组是非递减顺序排列的，所以较大值一定在最右侧，较小值在最左侧
设置两个指针，当左右指针指向的值之和大于 target 时，说明此时右侧值过大，所以右指针需要向左一位，反之如此
当找到符合条件的两个指针时，返回结果
"""


# @lc code=start
class Solution:
    def twoSum(self, numbers: List[int], target: int) -> List[int]:
        n = len(numbers)
        left, right = 0, n-1
        while left <= right:
            if numbers[left] + numbers[right] > target:
                right -= 1
            elif numbers[left] + numbers[right] < target:
                left += 1
            else:
                return [left+1, right+1]
        
        
# @lc code=end

